home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
B-Book Series
/
(k)b5.d64
/
quicksort.l
< prev
next >
Wrap
Text File
|
2007-02-28
|
830b
|
26 lines
9000 //
9010 // 3 QUICKSORT ROUTINES FOLLOW:
9020 //
9030 PROC QUICKSORT(REF A$(),LEFT',RIGHT',RECLEN) CLOSED
9040 DIM PIVOT$ OF RECLEN, BUFFER$ OF RECLEN
9050 PARTITION(LEFT',RIGHT',LEFT',RIGHT') // SORT A$(LEFT':RIGHT')
9060 ENDPROC QUICKSORT
9070 //
9080 PROC PARTITION(LEFT',RIGHT',I,J)
9090 PIVOT$:=A$((LEFT'+RIGHT') DIV 2) // GET MIDDLE ELEMENT AS PIVOT
9100 REPEAT // PERFORM SWAPPINGS
9110 WHILE PIVOT$>A$(I) DO I:+1
9120 WHILE PIVOT$<A$(J) DO J:-1
9130 IF I<=J THEN SWAP(A$(I),A$(J)); I:+1; J:-1
9140 UNTIL I>J
9150 IF LEFT'<J THEN PARTITION(LEFT',J,LEFT',J) // SORT A$(LEFT':J)
9160 IF I<RIGHT' THEN PARTITION(I,RIGHT',I,RIGHT') // SORT A$(I:RIGHT')
9170 ENDPROC PARTITION
9180 //
9190 PROC SWAP(REF A$,REF B$)
9200 BUFFER$:=A$; A$:=B$; B$:=BUFFER$
9210 ENDPROC SWAP
9220 //
9230 // END OF QUICKSORT ROUTINES
9240 //